/**
 * @author Andrew Dashin <dashin@andrewdashin.com>
 */

function newJSJTKEntity(sName, oDisplay) {
    if(sName == '') {
        alert('Wrong entity name');
        return;
    }
    
    if(!document.getElementById(sName)) {
        var obj = new MyEntity(sName);
			obj.div.style.top = startY;
			obj.div.style.left = startX;
			obj.show(oDisplay);
    } else {
        alert(i18n("mainmenu.createentity.entityexists.text"));
    }
	
	return obj;
}

function createTable() {
	if (!MyEntityEditor.prototype.active)  {
	var obj = new MyEntity();
	    obj.show($('pane'));
		obj.fieldsSet.addField('ID', 5, {length: 5, unsigned: true, zerofill: true, notnull: false});
		return obj;
	} else {
		alert(i18n("mainmenu.createentity.editorisopened.text"));
	}
}

/*
 * This initializes primary page
 * With login box and etc.
 * 
 */
 
function main_init() {
//    	var oLoginBox = new MyLoginBox();
	//document.body.appendChild(oLoginBox.div);
//	oLoginBox.show();
}

/*
 * Deletes all events from document.body
 * and removes all DOM body childs
 * 
 */
function body_clear() {
	/* не так всё удалять */
	 if (document.body.onResize)
		 delete document.body.onResize;
	 for (var i = document.body.childNodes.length - 1; i >= 0; i--) {
	 	if (document.body.childNodes[i].getThis)
	 		document.body.childNodes[i].getThis().dispose();
	 	else
	 		document.body.removeChild(document.body.childNodes[i]);
	 }
}

var mainPane;

function resize() {
	
}

function designer_init() {
    mainPane = new MyLayout();
    var bar =  new MyMenuBar();
    var side = new MySideBar();
		bar.show(mainPane);
		side.show(mainPane);        
    var oPane = new MyPane();
        oPane.show(mainPane);

	var oUsers = newJSJTKEntity('Users', oPane);
//	oUsers.bar.div.innerHTML = 'Users';
	var oAccounts = newJSJTKEntity('Accounts', oPane);
//	alert(oAccounts.getNewSlot().div.id);
//	oUsers.wireWith(oAccounts);
//	oAccounts.bar.div.innerHTML = 'Accounts';
//	var oAccounts = newJSJTKEntity('Accounts', oPane);
	
	oUsers.wireWith(oAccounts);

    mainPane.show(); 
	oUsers.redrawWires();
    mainPane.resize();
    resize = mainPane.resize;
}

var Logout = Class.create();
Logout.prototype = Object.extend(new Service(), {
    initialize: function () {
        var obj = this;
        Service.prototype.initialize.call(this, {
                onResponseRecieved: function (t) {obj.logout(t)},
                onFailure:          function (t) {obj.logout(t)},
                parameters:         {
                                      service: 'logout'
                                    }
                }
        );
    },
    logout: function (t) {
        // This brach is invoked when the function is called from service
        // May be some custom action will be added
        window.location = "./";
    }
});
/*
 * 1. wireWith сделать чем-то вроде: oUsres.wireWith(oAccounts.getField('ID'))
 * ну или вроде того 
 * 
 * 2. Добавление/удаление полей (типы данных MySQL и их совместимость, например может ли поле TINYINT
 * указывать внещним ключом на INT )
 * 
 * 3. 
*/
